home *** CD-ROM | disk | FTP | other *** search
/ Macintosh Technology Seed 1996 September / Macintosh Technology Seed (September 1996) (CDRM1437020).ISO / pc / qd3d15d6 / 15d6_sdk.exe / QD3D Win32 1.5d6 / Interfaces / QD3DController.h < prev    next >
C/C++ Source or Header  |  1996-08-21  |  10KB  |  338 lines

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DController.h                                         **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Each physical device is represented in the system by a     **
  7.  **                 Controller record.  A device driver typically creates     **
  8.  **                 a controller.  Controller feeds changes in coordinates     **
  9.  **                 to a Tracker.                                             **
  10.  **                                                                          **
  11.  **                                                                          **
  12.  **                                                                          **
  13.  **     Copyright (C) 1992-1995 Apple Computer, Inc.  All rights reserved.     **
  14.  **                                                                          **
  15.  **                                                                          **
  16.  *****************************************************************************/
  17. #ifndef QD3DController_h
  18. #define QD3DController_h
  19.  
  20. #if defined(PRAGMA_ONCE) && PRAGMA_ONCE
  21.     #pragma once
  22. #endif  /*  PRAGMA_ONCE  */
  23.  
  24. #if defined(THINK_C) || defined(__SC__)
  25.     #pragma options(!pack_enums, !align_arrays)
  26.     #pragma SC options align=power
  27. #elif defined(__MWERKS__)
  28.     #pragma enumsalwaysint on
  29.     #pragma align_array_members off
  30.     #pragma options align=native
  31. #elif defined(__PPCC__)
  32.     #pragma options align=power
  33. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  34.     #pragma options enum=int
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif  /*  __cplusplus  */
  40.  
  41.  
  42. /******************************************************************************
  43.  **                                                                             **
  44.  **                                Type Definitions                             **
  45.  **                                                                             **
  46.  *****************************************************************************/
  47.  
  48. #define kQ3ControllerSetChannelMaxDataSize        256
  49.  
  50. typedef TQ3Status (*TQ3ChannelGetMethod) (
  51.     TQ3ControllerRef            controllerRef,
  52.     unsigned long                channel,
  53.     void                        *data,
  54.     unsigned long                *dataSize);
  55.  
  56. typedef TQ3Status (*TQ3ChannelSetMethod) (
  57.     TQ3ControllerRef            controllerRef,
  58.     unsigned long                channel,
  59.     const void                    *data,
  60.     unsigned long                dataSize);
  61.  
  62. typedef struct TQ3ControllerData {
  63.     char                        *signature;
  64.     unsigned long                valueCount;
  65.     unsigned long                channelCount;
  66.     TQ3ChannelGetMethod            channelGetMethod;
  67.     TQ3ChannelSetMethod            channelSetMethod;
  68. } TQ3ControllerData;
  69.  
  70.  
  71. /******************************************************************************
  72.  **                                                                             **
  73.  **                                     Routines                                 **
  74.  **                                                                             **
  75.  *****************************************************************************/
  76.  
  77. QD3D_EXPORT TQ3Status Q3Controller_GetListChanged (
  78.     TQ3Boolean                    *listChanged,
  79.     unsigned long                *serialNumber);
  80.  
  81. QD3D_EXPORT TQ3Status Q3Controller_Next(
  82.     TQ3ControllerRef            controllerRef,
  83.     TQ3ControllerRef            *nextControllerRef);
  84.  
  85. QD3D_EXPORT TQ3ControllerRef Q3Controller_New(
  86.     const TQ3ControllerData        *controllerData);
  87.  
  88. QD3D_EXPORT TQ3Status Q3Controller_Decommission(
  89.     TQ3ControllerRef            controllerRef);
  90.  
  91. QD3D_EXPORT TQ3Status Q3Controller_SetActivation(
  92.     TQ3ControllerRef            controllerRef,
  93.     TQ3Boolean                    active);
  94.  
  95. QD3D_EXPORT TQ3Status Q3Controller_GetActivation(
  96.     TQ3ControllerRef            controllerRef,
  97.     TQ3Boolean                    *active);
  98.  
  99. QD3D_EXPORT TQ3Status Q3Controller_GetSignature(
  100.     TQ3ControllerRef            controllerRef,
  101.     char                        *signature,
  102.     unsigned long                numChars);
  103.  
  104. QD3D_EXPORT TQ3Status Q3Controller_SetChannel(
  105.     TQ3ControllerRef            controllerRef,
  106.     unsigned long                channel,
  107.     const void                    *data,
  108.     unsigned long                dataSize);
  109.  
  110. QD3D_EXPORT TQ3Status Q3Controller_GetChannel(
  111.     TQ3ControllerRef            controllerRef,
  112.     unsigned long                channel,
  113.     void                        *data,
  114.     unsigned long                *dataSize);
  115.  
  116. QD3D_EXPORT TQ3Status Q3Controller_GetValueCount(
  117.     TQ3ControllerRef            controllerRef,
  118.     unsigned long                *valueCount);
  119.  
  120. QD3D_EXPORT TQ3Status Q3Controller_SetTracker(
  121.     TQ3ControllerRef            controllerRef,
  122.     TQ3TrackerObject            tracker);
  123.  
  124. QD3D_EXPORT TQ3Status Q3Controller_HasTracker(
  125.     TQ3ControllerRef            controllerRef,
  126.     TQ3Boolean                    *hasTracker);
  127.  
  128. QD3D_EXPORT TQ3Status Q3Controller_Track2DCursor(
  129.     TQ3ControllerRef            controllerRef,
  130.     TQ3Boolean                    *track2DCursor);
  131.  
  132. QD3D_EXPORT TQ3Status Q3Controller_Track3DCursor(
  133.     TQ3ControllerRef            controllerRef,
  134.     TQ3Boolean                    *track3DCursor);
  135.  
  136. QD3D_EXPORT TQ3Status Q3Controller_GetButtons(
  137.     TQ3ControllerRef            controllerRef,
  138.     unsigned long                *buttons);
  139.  
  140. QD3D_EXPORT TQ3Status Q3Controller_SetButtons(
  141.     TQ3ControllerRef            controllerRef,
  142.     unsigned long                buttons);
  143.  
  144. QD3D_EXPORT TQ3Status Q3Controller_GetTrackerPosition(
  145.     TQ3ControllerRef            controllerRef,
  146.     TQ3Point3D                    *position);
  147.  
  148. QD3D_EXPORT TQ3Status Q3Controller_SetTrackerPosition(
  149.     TQ3ControllerRef            controllerRef,
  150.     const TQ3Point3D            *position);
  151.  
  152. QD3D_EXPORT TQ3Status Q3Controller_MoveTrackerPosition(
  153.     TQ3ControllerRef            controllerRef,
  154.     const TQ3Vector3D            *delta);
  155.  
  156. QD3D_EXPORT TQ3Status Q3Controller_GetTrackerOrientation(
  157.     TQ3ControllerRef            controllerRef,
  158.     TQ3Quaternion                *orientation);
  159.  
  160. QD3D_EXPORT TQ3Status Q3Controller_SetTrackerOrientation(
  161.     TQ3ControllerRef            controllerRef,
  162.     const TQ3Quaternion            *orientation);
  163.  
  164. QD3D_EXPORT TQ3Status Q3Controller_MoveTrackerOrientation(
  165.     TQ3ControllerRef            controllerRef,
  166.     const TQ3Quaternion            *delta);
  167.  
  168. QD3D_EXPORT TQ3Status Q3Controller_GetValues(
  169.     TQ3ControllerRef            controllerRef,
  170.     unsigned long                valueCount,
  171.     float                        *values,
  172.     TQ3Boolean                    *changed,
  173.     unsigned long                *serialNumber);
  174.  
  175. QD3D_EXPORT TQ3Status Q3Controller_SetValues(
  176.     TQ3ControllerRef            controllerRef,
  177.     const float                    *values,
  178.     unsigned long                valueCount);
  179.  
  180.  
  181. /******************************************************************************
  182.  **                                                                             **
  183.  **                                 Routines                                     **
  184.  **                                                                             **
  185.  *****************************************************************************/
  186.  
  187. QD3D_EXPORT TQ3ControllerStateObject Q3ControllerState_New(
  188.     TQ3ControllerRef            controllerRef);
  189.  
  190. QD3D_EXPORT TQ3Status Q3ControllerState_SaveAndReset(
  191.     TQ3ControllerStateObject    controllerStateObject);
  192.  
  193. QD3D_EXPORT TQ3Status Q3ControllerState_Restore(
  194.     TQ3ControllerStateObject    controllerStateObject);
  195.  
  196.  
  197. /******************************************************************************
  198.  **                                                                             **
  199.  **                            Type Definitions                                 **
  200.  **                                                                             **
  201.  *****************************************************************************/
  202.  
  203. typedef TQ3Status (*TQ3TrackerNotifyFunc) (
  204.     TQ3TrackerObject            trackerObject,
  205.     TQ3ControllerRef            controllerRef);
  206.  
  207.  
  208. /******************************************************************************
  209.  **                                                                             **
  210.  **                                 Routines                                     **
  211.  **                                                                             **
  212.  *****************************************************************************/
  213.  
  214. QD3D_EXPORT TQ3TrackerObject Q3Tracker_New(
  215.     TQ3TrackerNotifyFunc        notifyFunc);
  216.  
  217. QD3D_EXPORT TQ3Status Q3Tracker_SetNotifyThresholds(
  218.     TQ3TrackerObject            trackerObject,
  219.     float                        positionThresh,
  220.     float                        orientationThresh);
  221.  
  222. QD3D_EXPORT TQ3Status Q3Tracker_GetNotifyThresholds(
  223.     TQ3TrackerObject            trackerObject,
  224.     float                        *positionThresh,
  225.     float                        *orientationThresh);
  226.  
  227. QD3D_EXPORT TQ3Status Q3Tracker_SetActivation (
  228.     TQ3TrackerObject            trackerObject,
  229.     TQ3Boolean                    active);
  230.  
  231. QD3D_EXPORT TQ3Status Q3Tracker_GetActivation (
  232.     TQ3TrackerObject            trackerObject,
  233.     TQ3Boolean                    *active);
  234.  
  235. QD3D_EXPORT TQ3Status Q3Tracker_GetButtons(
  236.     TQ3TrackerObject            trackerObject,
  237.     unsigned long                *buttons);
  238.  
  239. QD3D_EXPORT TQ3Status Q3Tracker_ChangeButtons(
  240.     TQ3TrackerObject            trackerObject,
  241.     TQ3ControllerRef            controllerRef,
  242.     unsigned long                buttons,
  243.     unsigned long                buttonMask);
  244.  
  245. QD3D_EXPORT TQ3Status Q3Tracker_GetPosition(
  246.     TQ3TrackerObject            trackerObject,
  247.     TQ3Point3D                    *position,
  248.     TQ3Vector3D                    *delta,
  249.     TQ3Boolean                    *changed,
  250.     unsigned long                *serialNumber);
  251.  
  252. QD3D_EXPORT TQ3Status Q3Tracker_SetPosition(
  253.     TQ3TrackerObject            trackerObject,
  254.     TQ3ControllerRef            controllerRef,
  255.     const TQ3Point3D            *position);
  256.  
  257. QD3D_EXPORT TQ3Status Q3Tracker_MovePosition(
  258.     TQ3TrackerObject            trackerObject,
  259.     TQ3ControllerRef            controllerRef,
  260.     const TQ3Vector3D            *delta);
  261.  
  262. QD3D_EXPORT TQ3Status Q3Tracker_GetOrientation(
  263.     TQ3TrackerObject            trackerObject,
  264.     TQ3Quaternion                *orientation,
  265.     TQ3Quaternion                *delta,
  266.     TQ3Boolean                    *changed,
  267.     unsigned long                *serialNumber);
  268.  
  269. QD3D_EXPORT TQ3Status Q3Tracker_SetOrientation(
  270.     TQ3TrackerObject            trackerObject,
  271.     TQ3ControllerRef            controllerRef,
  272.     const TQ3Quaternion            *orientation);
  273.  
  274. QD3D_EXPORT TQ3Status Q3Tracker_MoveOrientation(
  275.     TQ3TrackerObject            trackerObject,
  276.     TQ3ControllerRef            controllerRef,
  277.     const TQ3Quaternion            *delta);
  278.  
  279. QD3D_EXPORT TQ3Status Q3Tracker_SetEventCoordinates(
  280.     TQ3TrackerObject            trackerObject,
  281.     unsigned long                timeStamp,
  282.     unsigned long                buttons,
  283.     const TQ3Point3D            *position,
  284.     const TQ3Quaternion            *orientation);
  285.  
  286. QD3D_EXPORT TQ3Status Q3Tracker_GetEventCoordinates(
  287.     TQ3TrackerObject            trackerObject,
  288.     unsigned long                timeStamp,
  289.     unsigned long                *buttons,
  290.     TQ3Point3D                    *position,
  291.     TQ3Quaternion                *orientation);
  292.  
  293.  
  294. /******************************************************************************
  295.  **                                                                             **
  296.  **                                 Types                                         **
  297.  **                                                                             **
  298.  *****************************************************************************/
  299.  
  300. typedef void (*TQ3CursorTrackerNotifyFunc) (void);
  301.  
  302. /******************************************************************************
  303.  **                                                                             **
  304.  **                                 Routines                                     **
  305.  **                                                                             **
  306.  *****************************************************************************/
  307.  
  308. TQ3Status Q3CursorTracker_PrepareTracking(
  309.     void);
  310.  
  311. TQ3Status Q3CursorTracker_SetTrackDeltas(
  312.     TQ3Boolean                    trackDeltas);
  313.  
  314. TQ3Status Q3CursorTracker_GetAndClearDeltas(
  315.     float                        *depth,
  316.     TQ3Quaternion                *orientation,
  317.     TQ3Boolean                    *hasOrientation,
  318.     TQ3Boolean                    *changed,
  319.     unsigned long                *serialNumber);
  320.  
  321. TQ3Status Q3CursorTracker_SetNotifyFunc(
  322.     TQ3CursorTrackerNotifyFunc    notifyFunc);
  323.  
  324. TQ3Status Q3CursorTracker_GetNotifyFunc(
  325.     TQ3CursorTrackerNotifyFunc    *notifyFunc);
  326.     
  327. #ifdef __cplusplus
  328. }
  329. #endif  /*  __cplusplus  */
  330.  
  331. #if defined(__MWERKS__)
  332.     #pragma enumsalwaysint reset
  333. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  334.     #pragma options enum=reset
  335. #endif
  336.  
  337. #endif  /*  QD3DController_h  */
  338.